package org.biubiu0002.baiblog.core.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.biubiu0002.baiblog.core.model.entity.ShareFavorCountEntity;

/**
 * @Author: biubiu0002
 * @Date: 2022-05-15 16:52
 **/
public interface ShareFavorCountService extends IService<ShareFavorCountEntity> {
    /**
     * 从数据库中得到收藏数
     * @param shareId 分享id
     * @return 收藏数
     */
    int getShareFavorCountFromDB(String shareId);

    /**
     * 从缓存中取得收藏数，包含了缓存过期的逻辑
     * @param shareId 分享id
     * @return 收藏数
     */
    Integer getShareFavorCount(String shareId);

    /**
     * 把数据库中收藏数从redis同步到db
     */
    void syncShareFavorCountFromRedis2DB();

    /**
     * 计数器+1 包含了key过期的逻辑处理
     * @param shareId 分享id
     */
    void incrementFavorCount(String shareId);

    /**
     * 计数器-1 包含了 key过期的处理逻辑
     * @param shareId 分享id
     */
    void decrementFavorCount(String shareId);
}
